#ifndef _MB_COM_H
#define _MB_COM_H

#include "mbdef.h"
void mb_package_send(mb_obj_type * mb_obj);

// 以下函数可以在外部实现以提高效率
void mb_rtu_timer_run(mb_obj_type *mb_obj); //1ms中断中调用
void mb_tx_tc_end(mb_obj_type *mb_obj);

// 使用硬件定时器时不调用这两个函数，有外部重新实现为硬件定时
void mb_timer_en(mb_obj_type *mb_obj); //接收中断调用
void mb_timer_dis(mb_obj_type *mb_obj);

// 基本设置
void mb_slave_id_set(mb_obj_type *mb_obj, uint8_t id);
void mb_timeout_set(mb_obj_type *mb_obj, uint16_t time);
void mb_rtu_time_set(mb_obj_type *mb_obj, uint16_t time);
void mb_end_delay_set(mb_obj_type *mb_obj, uint16_t time);


/* 初始化对象包含以下内容
	mb_obj->fun.slave.reg_coils_cb = &smb_default_CoilsCB;
	mb_obj->fun.slave.reg_discrete_cb = &smb_default_DiscreteCB;
	mb_obj->fun.slave.reg_hold_cb = &smb_default_HoldingCB;
	mb_obj->fun.slave.reg_input_cb = &smb_default_InputCB;
	//MASER FUNCTION INIT
	mmb_cmd_buff_init(mb_obj, mmb_cmd_buff, 16, 8);
	mb_obj->fun.master.err_cnt = 0;

	mb_obj->os_rtu_end_event = 0x01;
	mb_obj->os_timeout_event = 0x02;
	mb_obj->rtu_rcv_end_delay_set = 5;

	mb_obj->os_event_send = mb_default_os_send;
	mb_obj->adu_send = mb_default_DataSend;
	*/
void mb_obj_init(mb_obj_type *mb_obj); //主机指向一个内部命令列表，列表长16，静态动态各8

void mb_poll(mb_obj_type *mb_obj);

//长按执行一次的操作， check_val_now为被监控变量  plse提供计数脉冲
//超时释放计数值6     长按动作计数15
void  mb_gus_key_opt(mb_gus_keep_key_t *key, uint8_t check_val_now, uint8_t b_pulse);

#endif
